/**
 * 1. hasOwnProperty
 * 用于判断对象是否有某一个属性属于自己（不在原型上的属性）
 */
var obj = {
  name: 'li'
}

var info = Object.create(obj)
console.log(info.name) //li
console.log(info.hasOwnProperty('name')) //false

/**
 * 2. in/for in
 * 判断某个属性是否在某个对象或者对象的原型上
 */
console.log('name' in info) //true

/**
 * 3. instanceof
 * 用于检测构造函数的prototype，是否出现在某个实例对象的原型链上
 * 如下判断Person.prototype是否出现在p的原型链上
 * instanceof后面只能接一个函数
 */
function Person() {

}

var p = new Person()
console.log(p instanceof Person) //true

/**
 * 4. isPrototypeOf
 * 用于检测某个对象，是否出现在某个实例对象的原型链上
 */
console.log(Person.prototype.isPrototypeOf(p)) //true
var o = {}
var oo = Object.create(o)
console.log(o.isPrototypeOf(oo)) //true
